package partFour;
/*本类用于测试匿名内部类
 * 匿名内部类没有名字，通常与匿名对象结合在一起使用*/
public class TestInner5 {
    public static void main(String[] args) {
        //传统方法：创建接口的实现类+实现类实现类实现接口中的抽象方法+创建实现类对象+通过对象调用方法
        //3.创建接口一对应的匿名对象与匿名内部类new Inter1(){}.save;，并调用实现了的方法save
        new Inter1() {
            @Override
            public void save() {
                System.out.println("save()...");
            }

            @Override
            public void get() {    }
        }.save();

        //5.创建抽象类对应的匿名对象与匿名内部类
        new Inter2(){//抽象类不能实现抽象方法，所以只实现了未实现的方法
            @Override
            public void drink() {
                System.out.println("一人我饮酒醉");
            }
        }.drink();

        //7.调用普通类的功能调用，创建匿名对象直接调用
        new Inter3().powerUP();
        new Inter3().powerUP();//new了俩次，所以是俩个匿名对象

        /*如果想要多次使用实现后的功能，还是要创建普通的对象
         * 匿名对象只能使用一次，一次只能调用一个功能
         * 匿名内部类其实就充当了实现类的角色，去实现未实现的抽象方法，只是没有名字而已*/
        Inter3 in = new Inter3();
        in.study();
        in.study();
        in.study();
        in.study();
    }
}

//1.创建接口
interface Inter1{
    //2.定义接口中的抽象方法
    void save();
    void get();
}
//4.创建抽象类
abstract class Inter2{
    public void play(){
        System.out.println("Inner...play()");
    }
    abstract public void drink();
}
//6.创建普通类
class Inter3{
    public void study(){
        System.out.println("什么都阻挡不了我学习");
    }
    public void powerUP(){
        System.out.println("我们会越来越强的");
    }
}